Clock skew analysis and optimization

ABSTRACT

A method for adjusting clock skew in a network is disclosed. A model is fit to a first clock input signal received at a first receiver of the network and to a second clock input signal received at a second receiver of the network to obtain a fitted model. A first response signal is simulated using the fitted model and the first clock input signal and a second response signal is simulated using the fitted model and the second clock input signal. A time difference is determined between the simulated first response signal and the simulated second response signal. A parameter of at least one of the network clock network, the first receiver and the second receiver is altered to adjust the determined time difference.

BACKGROUND

The present disclosure relates to circuit networks and, in particular, to a method of analyzing clock skew in a circuit network.

Circuit networks generally include a plurality of components or receivers coupled to a clock and receiving a clock input signal from a clock network. Due to various differences in clock path, receiver response and other parameters, the receivers tend to record different arrival times of the clock input signals and therefore produce output response signals in response to the clock input signals at different times. The difference between clock input arrival times at the receiver inputs is known as clock skew. In general, optimal network operation requires that clock skew be reduced or removed from the network or deliberately controlled in some particular fashion in order to meet specific design requirements.

SUMMARY

According to one embodiment, a method of adjusting clock slew in a network includes: fitting, with a processor, a model to a first clock input signal received at a first receiver of the network and a second clock input signal received at a second receiver of the network to obtain a fitted model; simulating a first response signal using the fitted model and the first clock input signal and a second response signal using the fitted model and the second clock input signal; determining a time difference between the simulated first response signal and the simulated second response signal; and altering a parameter of at least one of a network clock that produces the first clock input and the second clock input, the first receiver and the second receiver to adjust the determined time difference.

According to another embodiment, a method of synchronizing a first receiver of a network to a second receiver of a network includes: selecting, by a processor, a model that relates a clock input signal received at a first receiver of the network to a response signal of the first receiver; fitting the selected model to measured times relating to the clock input signal; simulating a response signal of the first receiver using the fitted model; and altering a parameter of at least one of a clock network, the first receiver and the second receiver to adjust a time difference between the simulated response signal and a response signal of the second receiver.

According to another embodiment, a computer program product includes a computer readable storage medium having computer readable program code embodied therewith, the computer readable program code comprising instructions, that when executed by a computer, implement a method of adjusting clock skew in a network, wherein the method comprises: fitting a model to a first clock input signal received at a first receiver of the network and a second clock input signal received at a second receiver of the network to obtain a fitted model; simulating a first response signal using the fitted model and the first clock input signal and a second response signal using the fitted model and the second clock input signal; determining a time difference between the simulated first response signal and the simulated second response signal; and altering a parameter of at least one of a network clock, the first receiver and the second receiver to adjust the determined time difference.

Additional features and advantages are realized through the techniques of the present disclosure. Other embodiments and aspects of the disclosure are described in detail herein and are considered a part of the claimed disclosure. For a better understanding of the disclosure with the advantages and the features, refer to the description and to the drawings.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The subject matter which is regarded as the disclosure is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other features and advantages of the disclosure are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:

FIG. 1 shows an exemplary network of receivers that receive a clock input signal from a clock network;

FIG. 2 shows two clock input signals that may be received at exemplary receivers of the exemplary network;

FIG. 3 illustrates a method of correcting arrival times of the two clock input signals of FIG. 2 using current methods;

FIG. 4 shows a plurality of exemplary clock signals having different waveform shapes;

FIG. 5 illustrates an exemplary method of fitting a function to an exemplary clock input signal in one embodiment of the present disclosure;

FIG. 6 shows a flowchart illustrating an exemplary method of reducing clock skew in a network of receivers; and

FIG. 7 is a schematic block diagram of a general-purpose computing system suitable for practicing embodiments of the present invention.

DETAILED DESCRIPTION

FIG. 1 shows an exemplary network 100 of receivers that receive a clock input signal from a clock. The exemplary network includes a clock 110 that provides the clock input signals to the network of receivers 102, 104, 106, 108, wherein each receiver is coupled to the clock 110 via a clock signal path. The clock 110 may be referred to as a network clock. A receiver such as exemplary receivers 102, 104, 106 and 108 may refer to any network element that receives an input signal and produces an output signal in response. For illustrative purposes only, the exemplary network 100 is shown to include four receivers. However, other networks suitable for use with the methods disclosed herein may include any number of receivers and in some cases include receivers numbering in the hundreds or thousands or more. The clock 110 produces a clock signal 111 that rises from a low voltage to a high voltage at a selected time. Due to differences in various parameters along the clock signal paths, clock signal 111 arrives at the receivers having the displayed waveforms of clock input signals 112, 114, 116 and 118. The waveforms of the clock input signals 112, 114, 116 and 118 may therefore differ from the original waveform of clock signal 111 as well as from each other and may arrive at the receivers at different times. Each receiver 102, 104, 106 and 108 of the exemplary network 100 produces a response signal (i.e., 122, 124, 126 and 128, respectively) in response to their respective clock input signals 112, 114, 116 and 118. The differences in the waveforms of the received clock input signals 112, 114, 116 and 118 as well as differences in their arrival times at their respective receivers 102, 104, 106 and 108 may therefore result in one receiver producing a response signal at a different time than a response signal of the other receivers, thereby resulting in a skew in the output responses of the receivers. Prior methods focus on ways to even out the arrival times of the clock inputs at the receivers in order to reduce the clock input skew and thereby the receiver output skew. However, if the clock input waveforms are different at each receiver input, the receiver outputs will not be synchronous even when all the clock inputs arrive at the same time. Thus, prior methods are therefore lacking in accuracy since they do not directly address the skew at the receiver outputs.

FIG. 2 shows two clock input signals 202 and 204 that may be received at exemplary receivers of the exemplary network 100. Clock input signal 202 may be received at one receiver and clock input signal 204 may be received at another receiver. The clock input signals increase from a low voltage 208 which is generally zero volts to a high voltage 212 referred to herein as the rail voltage. An exemplary reference voltage level 210 is shown that is 50% of the rail voltage 212. However, the reference voltage may be any selected voltage level. Although the clock input signals 202 and 204 increase from the low voltage 208 substantially simultaneously and reach the rail voltage 212 substantially simultaneously, they clearly cross the reference voltage 210 at distinctly different times. Clock input signal 202 crosses the reference voltage 210 at time t₀ and then experiences a plateau above the reference voltage before ascending to the rail voltage 212. Clock input signal 204, after experiencing a plateau, crosses the reference voltage 210 at time t₁ and rises to the rail voltage 212. Thus, using the crossing time at reference voltage 210 as the definition of the clock arrival time, as is common practice in the industry, clock input signals 202 and 204 are calculated to have significantly different arrival times at their respective receivers. However, the output responses of the receivers are similar with similar timing, since the two input waveforms are substantially similar.

FIG. 3 (Prior Art) illustrates a known method for correcting arrival times of the two clock input waveforms 202 and 204 using current methods. The clock input waveforms 202 and 204 are adjusted so as to line up their arrival times (t₀ and t₁). These waveforms may be adjusted in time using techniques that are well known in the industry, including tuning of network wire widths and lengths, adjusting clock buffer strengths, adding delay elements or by other methods. Such methods cause the receiver responses to occur at substantially different times, where the receiver with clock input 202 produces an output response considerably later than the receiver with clock input 204. This time difference results from the fact that, although waveforms 202 and 204 have similar shape (differing only slightly in the “plateau region”), prior methods of time adjustment causes input waveform 202 to occur later than input waveform 204 at almost every measurement voltage. Therefore, aligning waveforms with respect to any particular reference voltage (i.e., 50% rail voltage) does not necessarily produce the best alignment of the arrival times of the clock input signals. If the clock network is adjusted using current methods, the effective clock skew after adjustment will still be non-zero, since the output responses of the receivers will occur at different times due to differing input clock waveform shapes, as illustrated in FIG. 3.

FIG. 4 (Prior Art) shows a plurality of exemplary clock input signals having different waveform shapes and illustrates limitations of using a standard metric such as slew to describe the shape of the waveform. Slew is a metric that specifies a duration of time from when the signal reaches one specified voltage level to when it reaches another specified level. An example of these two specified voltage levels could be 10% of the rail voltage and 90% of the rail voltage. However, the choice of these two voltage crossing points is somewhat arbitrary. For example, voltage crossing points at 20% and 80% of the rail voltage or at 30% and 70% of the rail voltage have often been used for slew characterization in addition to the 10% and 90% method described above. The choice of the two voltage crossing points affects the numeric value of slew. Each of the exemplary clock input signals 401, 403 and 405 has the same slew as measured at the voltage levels V_(high) and V_(low). However, the overall shape of the waveform of each clock input signal is vastly different and the receiver output response times, when driven with these different inputs, are quite different, even when the inputs are lined up such that they all cross the reference voltage at the same time. Therefore, the slew of the clock input signal may be a poor indicator of how a receiver responds to the clock input signal.

The present disclosure provides a method of providing a response at a receiver output to a clock input signal that estimates the output response from clock input signals having a potential variety of waveforms. In one embodiment, the present disclosure provides a method of synchronizing responses that are produced at a plurality of receivers in order to reduce the effective clock skew by minimizing the skew in the predicted output response signals. In an exemplary embodiment, the present disclosure fits a mathematical function describing the receiver output to the parameters of the clock input signals. A variety of representative clock input signals may be measured at several receiver inputs and parameterized according to the times at which they cross specified voltage levels. A regression analysis may be used to fit the function describing the receiver output to the simulated receiver response or to a plurality simulated responses from a plurality of receivers. The plurality of simulated responses may correspond to input clock signals having a plurality of waveforms. For each input clock signal, the measured parameters of the input clock signal may be used as independent variables of the function. In general, the mathematical function may be expressed as a function of differences in the measured voltage level crossing times from some reference time (i.e. the time at which the input signal crosses a reference voltage). It is expected that the receiver response time, which is also measured as a difference from the time at which the input signal crosses the reference voltage, is independent of the absolute time at which the input signal is received. A plurality of clock input signals may be used, since the input clock waveform may vary from receiver to receiver. However, the waveform of a clock input signal at a selected receiver is substantially the same for any preceding or subsequent clock cycle.

FIG. 5 illustrates an exemplary method of fitting a function to an exemplary clock input signal. The exemplary clock input waveform 501 rises from a low voltage (i.e., zero volts) to a high voltage (i.e., rail voltage). A number of voltage levels are used in the model. The voltage levels may be selected and their particular voltage levels specified to provide an acceptable description of the input waveform. Times are measured when the clock input signal crosses the selected voltage levels. During its rise, the exemplary clock input signal 501 crosses voltage level V₀ at t₀, crosses voltage level V₁ at t₁, crosses voltage level V₂ at t₂, crosses voltage level V₃ at t₃, and crosses voltage level V_(ref) at t_(ref). V_(ref) may or may not be 50% of the rail voltage in various embodiments. The number of voltage levels shown in FIG. 5 is only an illustrative number. Any number of voltage levels may be selected depending on the desires of an operator. Increasing the number of voltage levels generally increases the accuracy of the model. Changing the placement of the voltage levels may also affect the accuracy of the model. For example, if the receiver response is sensitive to the clock input signal over a particular range of voltages, the spacing between selected measuring voltage levels may be reduced over this range of voltages to increase the accuracy of the model.

The crossing times t₀, t₁, t₂, t₃ and t_(ref) may be measured in order to characterize the waveform in question in terms of a small number of timing parameters. A time delay between clock input signal 501 and response signal 503 may be written as a function of differences in the measured crossing times, as shown in Eq. (1):

t _(out) −t _(ref) =F{(t ₀ −t _(ref)),(t ₁ −t _(ref)),(t ₂ −t _(ref)),(t ₃ −t _(ref))}  Eq. (1)

where t_(out)−t_(ref) represents a time delay between time t_(ref) at which the clock input signal 501 crosses the V_(ref) voltage level and time t_(out) at which the receiver response 503 crosses the V_(ref) voltage level. In an exemplary embodiment, the function of Eq. (1) may be a linear function, as shown for example in Eq. (2):

t _(out) −t _(ref) =A+a ₀(t ₀ −t _(ref))+a ₁(t ₁ −t _(ref))+a ₂(t ₂ −t _(ref))+a ₃(t ₃ −t _(ref))   Eq. (2)

where A is a constant term and a₀, a₁, a₂ and a₃ are coefficients of the selected time intervals. The functional form of Eq. (1) may be simpler or more complicated than the linear form of Eq. (2), may include non-linear terms, etc. In an exemplary embodiment, the time delay t_(out)−t_(ref) relates the clock input signal to a receiver response that has a constant slew with respect to the clock input signal. In an alternate embodiment in which the slew of the response signal is not constant but is translatable to a specified delay time change in downstream circuitry, a term representing this delay time change may be included in the mathematical function. Also, any predictable variations of the receiver response may be included in the model using a suitable term. Such predictable variations may include, for example, different output loads of the receivers. Additional delay terms may include a simple delay parameter, a setup time, a hold time or any other network timing specification, for example.

Once the format of the model, i.e., the mathematical function, has been selected, the model is fit to data points obtained from one or more representative clock input signals. The representative clock input signals may be actual clock input signals or simulated clock input signals. For each waveform, the individual time offset parameters (t_(n)−t_(ref) where n =0, 1, 2, 3, . . . ) are determined and the response time delay (t_(out)−t_(ref)) may be determined from a simulated response of the receiver. A least-squares regression may be used to fit the modeled (simulated) time delay response to a plurality of actual responses for the representative clock input signals (i.e. for all the different sets of time-offset parameters) by determining values of the coefficients, i.e., A, a₀, a₁, a₂, etc. Regression methods besides least-squares regression may also be used in alternate embodiments. Once suitable coefficients are determined, a simulated response may be produced using the fitted model. The simulated response is compared to an actual response to determine the suitability of the model. In an exemplary embodiment, a standard deviation may be used to determine a variability of the time delay, where

SD(t _(out) −t _(ref))=F′{(t ₀ −t _(ref)),(t ₁ −t _(ref)),(t ₂ −t _(ref)),(t ₃ −t _(ref))}  Eq. (3)

Once a suitable fitted model is selected, the selected fitted model may be used to quantify clock skew in a network. Using simulated responses, the disclosed method may be used to correct for the effective clock slew at different points on the receiver network by automatically compensating for the effects of the varying clock waveforms at the inputs of the different receivers.

FIG. 6 shows a flowchart illustrating an exemplary method of reducing the effective clock skew in a network of receivers. In box 602, a model or mathematical function (i.e., the exemplary function of Eq. (1)) is defined to relate a clock input signal at a receiver to a resultant receiver response. Defining the model may include selecting the model, selecting a number of parameters, such as a number of measurement voltage levels (i.e., voltage levels V₀, V₁, V₂ and V₃ and V_(ref)) and specifying their voltage levels. In box 604, at least one clock input signal is received and the model is fit to the received clock input signal(s). In particular, voltage crossing times (i.e., t₀, t₁, t₂, t₃ and t_(ref)) are measured and the model is fit to the clock input signals using the voltage crossing times. In various embodiments, a regression analysis, such as a least squares analysis, is used to determine the coefficients of the model, i.e., A, a₀, a₁, a₂, etc. In box 606, a simulated response is obtained using the fitted model, and the simulated response is compared to an actual response obtained at the receiver for a number of input clock waveforms. The waveforms may include some or all of the waveforms used originally in the model fitting procedure along with any other relevant waveforms. In an exemplary embodiment, the comparison may include determining differences between the simulated response time and the modeled response time and using the determined differences to obtain difference values for each input clock waveform of interest. In box 608, the difference values are compared to a selected criterion to determine whether the simulated response is an accurate description of the actual response. If the difference value is greater than the selected criterion, the simulated response is considered a non-accurate description and the method proceeds to box 610. In box 610, the model, parameter and/or timing points are redefined before returning to box 604 to fit the model to the clock input signals at box 604. Returning to box 608, if the difference value is less than or equal to the selected criterion, the simulated response is considered an accurate description of the actual response and the method proceeds to box 612. In box 612, the model is used to predict receiver responses for all receivers. In box 614, the network response signals may be synchronized using the modeled receiver response. In other words, the clock skew is adjusted or reduced using the modeled receiver response. In various embodiments, synchronizing the network response signals may include adjusting a parameter of the network clock, adjusting a parameter of at least one of the receivers, adjusting a buffer, adjusting a wire length, etc.

In an exemplary embodiment, the mathematical function may be written as a linear model having timing points that are chosen at 10%, 50% and 90% of the rail voltage, to obtain Eq. (3):

t _(out) −t _(ref) =A+a ₀(t ₁₀ −t _(ref))+a ₁(t ₉₀ −t _(ref))   Eq. (4)

Additionally, Eq. (4) may be reduced using a₀=−a₁ to obtain

t _(out) −t _(ref) =A+a ₁(t ₉₀ −t ₁₀)   Eq. (5)

Thus in one embodiment, the slew as measured between the selected voltages of 10% to 90% rail voltage may be used to determine response delay. However, other selected voltage levels may also be used in alternate embodiments.

As will be appreciated by one skilled in the art, aspects of the present disclosure may be embodied as a system, method or computer program product. Accordingly, aspects of the present disclosure may take the form of an entirely hardware embodiment, an entirely software embodiment (including firmware, resident software, micro-code, etc.) or an embodiment combining software and hardware aspects that may all generally be referred to herein as a “circuit,” “module” or “system.” Furthermore, aspects of the present disclosure may take the form of a computer program product embodied in one or more computer readable medium(s) having computer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may be utilized. The computer readable medium may be a computer readable signal medium or a computer readable storage medium. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples (a non-exhaustive list) of the computer readable storage medium would include the following: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the context of this document, a computer readable storage medium may be any tangible medium that may contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device.

A computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated signal may take any of a variety of forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may be any computer readable medium that is not a computer readable storage medium and that may communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device.

Generally, the method embodiments for implementing systematic, variation-aware integrated circuit extraction may be practiced with a general-purpose computer and the method may be coded as a set of instructions on removable or hard media for use by the general-purpose computer. FIG. 7 is a schematic block diagram of a general-purpose computing system suitable for practicing embodiments of the present invention. In FIG. 7, computing system 700 has at least one microprocessor or central processing unit (CPU) 705. CPU 705 is interconnected via a system bus 710 to a random access memory (RAM) 715, a read-only memory (ROM) 720, an input/output (I/O) adapter 725 for a connecting a removable data and/or program storage device 730 and a mass data and/or program storage device 735, a user interface adapter 740 for connecting a keyboard 745 and a mouse 750, a port adapter 755 for connecting a data port 760 and a display adapter 765 for connecting a display device 770.

ROM 720 contains the basic operating system for computing system 700. The operating system may alternatively reside in RAM 715 or elsewhere as is known in the art. Examples of removable data and/or program storage device 730 include magnetic media such as floppy drives and tape drives and optical media such as CD ROM drives. Examples of mass data and/or program storage device 735 include hard disk drives and non-volatile memory such as flash memory. In addition to keyboard 745 and mouse 750, other user input devices such as trackballs, writing tablets, pressure pads, microphones, light pens and position-sensing screen displays may be connected to user interface 740. Examples of display devices include cathode-ray tubes (CRT) and liquid crystal displays (LCD).

A computer program with an appropriate application interface may be created by one of skill in the art and stored on the system or a data and/or program storage device to simplify the practicing of this invention. In operation, information for or the computer program created to run the present invention is loaded on the appropriate removable data and/or program storage device 730, fed through data port 760 or typed in using keyboard 745.

In view of the above, the present method embodiments may therefore take the form of computer or controller implemented processes and apparatuses for practicing those processes. The disclosure can also be embodied in the form of computer program code containing instructions embodied in tangible media, such as floppy diskettes, CD-ROMs, hard drives, or any other computer-readable storage medium, wherein, when the computer program code is loaded into and executed by a computer or controller, the computer becomes an apparatus for practicing the invention. The disclosure may also be embodied in the form of computer program code or signal, for example, whether stored in a storage medium, loaded into and/or executed by a computer or controller, or transmitted over some transmission medium, such as over electrical wiring or cabling, through fiber optics, or via electromagnetic radiation, wherein, when the computer program code is loaded into and executed by a computer, the computer becomes an apparatus for practicing the invention. When implemented on a general-purpose microprocessor, the computer program code segments configure the microprocessor to create specific logic circuits. A technical effect of the executable instructions is to implement the exemplary method described above and illustrated in FIGS. 1-6.

Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to wireless, wireline, optical fiber cable, RF, etc., or any suitable combination of the foregoing.

Computer program code for carrying out operations for aspects of the present disclosure may be written in any combination of one or more programming languages, including an object oriented programming language such as Java, Smalltalk, C++ or the like and conventional procedural programming languages, such as the “C” programming language or similar programming languages. The program code may execute entirely on the user's computer, partly on the user's computer, as a stand-alone software package, partly on the user's computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider).

Aspects of the present disclosure are described below with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams,may be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computer readable medium that may direct a computer, other programmable data processing apparatus, or other devices to function in a particular manner, such that the instructions stored in the computer readable medium produce an article of manufacture including instructions which implement the function/act specified in the flowchart and/or block diagram block or blocks.

The computer program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other devices to cause a series of operational steps to be performed on the computer, other programmable apparatus or other devices to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide processes for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks.

The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, may be implemented by special purpose hardware-based systems that perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.

The terminology used herein is for the purpose of describing particular embodiments only and is not intended to be limiting of the disclosure. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises” and/or “comprising,” when used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one more other features, integers, steps, operations, element components, and/or groups thereof.

The corresponding structures, materials, acts, and equivalents of all means or step plus function elements in the claims below are intended to include any structure, material, or act for performing the function in combination with other claimed elements as specifically claimed. The description of the present disclosure has been presented for purposes of illustration and description, but is not intended to be exhaustive or limited to the disclosure in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the disclosure. The embodiment was chosen and described in order to best explain the principles of the disclosure and the practical application, and to enable others of ordinary skill in the art to understand the disclosure for various embodiments with various modifications as are suited to the particular use contemplated.

The flow diagrams depicted herein are just one example. There may be many variations to this diagram or the steps (or operations) described therein without departing from the spirit of the disclosure. For instance, the steps may be performed in a differing order or steps may be added, deleted or modified. All of these variations are considered a part of the claimed disclosure.

While the exemplary embodiment to the disclosure had been described, it will be understood that those skilled in the art, both now and in the future, may make various improvements and enhancements which fall within the scope of the claims which follow. These claims should be construed to maintain the proper protection for the disclosure first described. 

What is claimed is:
 1. A method of adjusting clock skew in a network, comprising: fitting, with a processor, a model to a first clock input signal received at a first receiver of the network and a second clock input signal received at a second receiver of the network to obtain a fitted model, wherein the first clock input signal and the second clock input signal correspond to a clock signal of a network clock; simulating a first response signal using the fitted model and the first clock input signal and a second response signal using the fitted model and the second clock input signal; determining a time difference between the simulated first response signal and the simulated second response signal; and adjusting the clock skew by altering a parameter of at least one of the network clock, the first receiver and the second receiver to adjust the determined time difference.
 2. The method of claim 1, wherein fitting the model further comprises measuring times at which a selected clock input signal crosses a plurality of voltage levels.
 3. The method of claim 2, wherein the fitted model is a function of differences between the measured times.
 4. The method of claim 2, further comprising fitting the model to the measured times using a regression analysis.
 5. The method of claim 1, further comprising comparing a simulated response to an actual response to determine a suitability of the fitted model.
 6. The method of claim 5, further comprising redefining the model when a difference between the simulated response and the actual response is greater than a selected criterion.
 7. The method of claim 6, further comprising using a standard deviation of the model to determine a variability of a delay time of a selected response.
 8. The method of claim 1, wherein altering the parameter further comprises altering at least one of: a clock buffer; a wire; a set-up time; a hold time; and a slew of a response.
 9. A method of synchronizing a first receiver of a network to a second receiver of a network, comprising: selecting, by a processor, a model that relates a clock input signal received at a first receiver of the network to a response signal of the first receiver; fitting the selected model to measured times relating to the clock input signal; simulating a response signal of the first receiver using the fitted model; and altering a parameter of at least one of a clock network, the first receiver and the second receiver to adjust a time difference between the simulated response signal and a response signal of the second receiver.
 10. The method of claim 9, wherein the response signal of the second receiver is a simulated response.
 11. The method of claim 9, wherein the response signal of the second receiver is determined using the fitted model.
 12. The method of claim 9, further comprising fitting the selected model to the measured times using a regression analysis.
 13. The method of claim 9, further comprising determining a difference between the simulated response signal to an actual response signal of the first receiver and redefining the model when the determined difference is greater than a selected criterion.
 14. The method of claim 13, wherein redefining the model further comprises at least one of: selecting a new model; altering a number of voltage levels of the model; and altering a placement of the voltage levels of the model.
 15. A computer program product comprising: a computer readable storage medium having computer readable program code embodied therewith, the computer readable program code comprising instructions, that when executed by a computer, implement a method of adjusting clock skew in a network, wherein the method comprises: fitting a model to a first clock input signal received at a first receiver of the network and a second clock input signal received at a second receiver of the network to obtain a fitted model wherein the first clock input signal and the second clock input signal correspond to a clock signal of a network clock; simulating a first response signal using the fitted model and the first clock input signal and a second response signal using the fitted model and the second clock input signal; determining a time difference between the simulated first response signal and the simulated second response signal; and adjusting the clock skew by altering a parameter of at least one of the network clock, the first receiver and the second receiver to adjust the determined time difference.
 16. The computer program product of claim 15, wherein the method further comprises fitting the model using times obtained when a selected clock input signal crosses a plurality of voltage levels.
 17. The computer program product of claim 15, wherein the method further comprises determining a difference between an actual response signal and one of the first response signal and the second response signal; and redefining the model when the determined difference is greater than a selected criterion.
 18. The computer program product of claim 17, wherein the method further comprises redefining the selected fitted model by performing at least one of: selecting a new model; altering a number of voltage levels of the model; and altering a placement of the voltage levels of the model.
 19. The computer program product of claim 15, wherein the method further comprises using a standard deviation of the model to determine a variability of a delay time of a selected response signal.
 20. The computer program product of claim 17, wherein the method further comprises fitting the model to the measured times using a regression analysis. 